Prompt Caching

좜처: https://platform.openai.com/docs/guides/prompt-caching

ν”„λ‘¬ν”„νŠΈ 캐싱 Prompt Caching

λͺ¨λΈ ν”„λ‘¬ν”„νŠΈμ—λŠ” μ‹œμŠ€ν…œ ν”„λ‘¬ν”„νŠΈ 및 일반적인 지침과 같은 반볡적인 μ½˜ν…μΈ κ°€ ν¬ν•¨λ˜μ–΄ μžˆλŠ” κ²½μš°κ°€ λ§ŽμŠ΅λ‹ˆλ‹€. OpenAIλŠ” API μš”μ²­μ„ μ΅œκ·Όμ— λ™μΌν•œ ν”„λ‘¬ν”„νŠΈλ₯Ό μ²˜λ¦¬ν•œ μ„œλ²„λ‘œ λΌμš°νŒ…ν•˜μ—¬ ν”„λ‘¬ν”„νŠΈλ₯Ό μ²˜μŒλΆ€ν„° μ²˜λ¦¬ν•˜λŠ” 것보닀 더 μ €λ ΄ν•˜κ³  λΉ λ₯΄κ²Œ μ²˜λ¦¬ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 λŒ€κΈ° μ‹œκ°„μ„ μ΅œλŒ€ 80%κΉŒμ§€ 쀄이고 κΈ΄ ν”„λ‘¬ν”„νŠΈμ˜ 경우 λΉ„μš©μ„ 50%κΉŒμ§€ μ ˆκ°ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν”„λ‘¬ν”„νŠΈ 캐싱은 λͺ¨λ“  API μš”μ²­μ—μ„œ μžλ™μœΌλ‘œ μž‘λ™ν•˜λ©°(μ½”λ“œ λ³€κ²½ ν•„μš” μ—†μŒ), 이와 κ΄€λ ¨λœ μΆ”κ°€ μš”κΈˆμ΄ μ—†μŠ΅λ‹ˆλ‹€.

ν”„λ‘¬ν”„νŠΈ 캐싱은 λ‹€μŒ λͺ¨λΈμ—μ„œ ν™œμ„±ν™”λ©λ‹ˆλ‹€:

이 κ°€μ΄λ“œμ—μ„œλŠ” ν”„λ‘¬ν”„νŠΈ μΊμ‹±μ˜ μž‘λ™ 원리λ₯Ό μžμ„Ένžˆ μ„€λͺ…ν•˜μ—¬ ν”„λ‘¬ν”„νŠΈλ₯Ό μ΅œμ ν™”ν•˜μ—¬ 지연 μ‹œκ°„κ³Ό λΉ„μš©μ„ 쀄일 수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€.

ν”„λ‘¬ν”„νŠΈ κ΅¬μ‘°ν™”ν•˜κΈ°

ν”„λ‘¬ν”„νŠΈ λ‚΄μ—μ„œ 접두사가 μ •ν™•νžˆ μΌμΉ˜ν•˜λŠ” κ²½μš°μ—λ§Œ μΊμ‹œ νžˆνŠΈκ°€ κ°€λŠ₯ν•©λ‹ˆλ‹€. 캐싱 이점을 μ‹€ν˜„ν•˜λ €λ©΄ ν”„λ‘¬ν”„νŠΈμ˜ μ‹œμž‘ 뢀뢄에 μ§€μΉ¨μ΄λ‚˜ μ˜ˆμ œμ™€ 같은 정적 μ½˜ν…μΈ λ₯Ό λ°°μΉ˜ν•˜κ³  μ‚¬μš©μžλ³„ 정보와 같은 κ°€λ³€ μ½˜ν…μΈ λ₯Ό λ§ˆμ§€λ§‰μ— λ°°μΉ˜ν•˜μ„Έμš”. μ΄λŠ” μš”μ²­ 간에 동일해야 ν•˜λŠ” 이미지와 도ꡬ에도 μ μš©λ©λ‹ˆλ‹€.

Prompt Caching visualization

μž‘λ™ 방식

1024 토큰 μ΄μƒμ˜ ν”„λ‘¬ν”„νŠΈμ— λŒ€ν•΄ 캐싱이 μžλ™μœΌλ‘œ ν™œμ„±ν™”λ©λ‹ˆλ‹€. API μš”μ²­μ„ ν•˜λ©΄ λ‹€μŒ 단계가 μ§„ν–‰λ©λ‹ˆλ‹€:

  1. μΊμ‹œ 쑰회: μ‹œμŠ€ν…œμ΄ ν”„λ‘¬ν”„νŠΈμ˜ 초기 λΆ€λΆ„(접두사)이 μΊμ‹œμ— μ €μž₯λ˜μ–΄ μžˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.
  2. μΊμ‹œ 히트: μΌμΉ˜ν•˜λŠ” 접두사가 발견되면 μ‹œμŠ€ν…œμ΄ μΊμ‹œλœ κ²°κ³Όλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ 지연 μ‹œκ°„μ΄ 크게 쀄어듀고 λΉ„μš©μ΄ μ ˆκ°λ©λ‹ˆλ‹€.
  3. μΊμ‹œ 미슀: μΌμΉ˜ν•˜λŠ” 접두사가 λ°œκ²¬λ˜μ§€ μ•ŠμœΌλ©΄ μ‹œμŠ€ν…œμ—μ„œ 전체 ν”„λ‘¬ν”„νŠΈλ₯Ό μ²˜λ¦¬ν•©λ‹ˆλ‹€. 처리 ν›„ ν”„λ‘¬ν”„νŠΈμ˜ μ ‘λ‘μ‚¬λŠ” ν–₯ν›„ μš”μ²­μ„ μœ„ν•΄ μΊμ‹œλ©λ‹ˆλ‹€.

μΊμ‹œλœ μ ‘λ‘μ‚¬λŠ” 일반적으둜 5~10λΆ„ λ™μ•ˆ μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” λ™μ•ˆ ν™œμ„± μƒνƒœλ‘œ μœ μ§€λ©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ‚¬μš©λŸ‰μ΄ λ§Žμ§€ μ•Šμ€ μ‹œκ°„λŒ€μ—λŠ” μ΅œλŒ€ 1μ‹œκ°„ λ™μ•ˆ μΊμ‹œκ°€ μœ μ§€λ  수 μžˆμŠ΅λ‹ˆλ‹€.

μš”κ΅¬ 사항

ν”„λ‘¬ν”„νŠΈμ— 1024개 μ΄μƒμ˜ 토큰이 ν¬ν•¨λ˜μ–΄ μžˆμ„ 경우 캐싱이 κ°€λŠ₯ν•˜λ©°, μΊμ‹œ νžˆνŠΈλŠ” 128개 토큰 λ‹¨μœ„λ‘œ λ°œμƒν•©λ‹ˆλ‹€. λ”°λΌμ„œ μš”μ²­μ—μ„œ μΊμ‹œλœ ν† ν°μ˜ μˆ˜λŠ” 항상 ν”„λ‘¬ν”„νŠΈμ˜ 길이에 따라 1024, 1152, 1280, 1408 λ“±κ³Ό 같은 μˆœμ„œμ— ν•΄λ‹Ήν•˜κ²Œ λ©λ‹ˆλ‹€.

토큰이 1024개 미만인 μš”μ²­μ„ ν¬ν•¨ν•œ λͺ¨λ“  μš”μ²­μ—λŠ” chat completions object의 usage.prompt_tokens_details에 μΊμ‹œλœ 토큰 수λ₯Ό λ‚˜νƒ€λ‚΄λŠ” cached_tokens ν•„λ“œλ₯Ό ν‘œμ‹œν•©λ‹ˆλ‹€. 토큰이 1024개 미만인 μš”μ²­μ˜ κ²½μš°μ—λŠ” cached_tokensκ°€ 0이 λ©λ‹ˆλ‹€.

"usage": { 
	"prompt_tokens": 2006, 
	"completion_tokens": 300, 
	"total_tokens": 2306, 
	"prompt_tokens_details": { 
		"cached_tokens": 1920 
	}, 
	"completion_tokens_details": { 
		"reasoning_tokens": 0 
	} 
}

μΊμ‹œν•  수 μžˆλŠ” ν•­λͺ©

λͺ¨λ²” 사둀

자주 λ¬»λŠ” 질문

  1. **μΊμ‹œμ— λŒ€ν•œ 데이터 κ°œμΈμ •λ³΄λŠ” μ–΄λ–»κ²Œ μœ μ§€λ˜λ‚˜μš”?

    ν”„λ‘¬ν”„νŠΈ μΊμ‹œλŠ” 쑰직 간에 κ³΅μœ λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ™μΌν•œ 쑰직의 κ΅¬μ„±μ›λ§Œ λ™μΌν•œ ν”„λ‘¬ν”„νŠΈμ˜ μΊμ‹œμ— μ•‘μ„ΈμŠ€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  2. **ν”„λ‘¬ν”„νŠΈ 캐싱이 좜λ ₯ 토큰 μƒμ„±μ΄λ‚˜ API의 μ΅œμ’… 응닡에 영ν–₯을 μ£Όλ‚˜μš”?

    ν”„λ‘¬ν”„νŠΈ 캐싱은 좜λ ₯ 토큰 μƒμ„±μ΄λ‚˜ APIμ—μ„œ μ œκ³΅ν•˜λŠ” μ΅œμ’… 응닡에 영ν–₯을 λ―ΈμΉ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 캐싱 μ‚¬μš© 여뢀에 관계없이 μƒμ„±λ˜λŠ” 좜λ ₯은 μΊμ‹œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μž…λ ₯ ν”„λ‘¬ν”„νŠΈ 자체만 μΊμ‹œλ˜κ³  μ‹€μ œ 응닡은 μΊμ‹œλœ ν”„λ‘¬ν”„νŠΈλ₯Ό 기반으둜 맀번 μƒˆλ‘œ κ³„μ‚°λ˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

  3. **μΊμ‹œλ₯Ό μˆ˜λ™μœΌλ‘œ μ§€μšΈ 수 μžˆλŠ” 방법이 μžˆλ‚˜μš”?

    ν˜„μž¬ μˆ˜λ™ μΊμ‹œ μ§€μš°κΈ°λŠ” μ œκ³΅λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ΅œκ·Όμ— λ°œμƒν•˜μ§€ μ•Šμ€ ν”„λ‘¬ν”„νŠΈλŠ” μΊμ‹œμ—μ„œ μžλ™μœΌλ‘œ μ§€μ›Œμ§‘λ‹ˆλ‹€. 일반적으둜 5~10λΆ„ λ™μ•ˆ ν™œλ™μ΄ μ—†μœΌλ©΄ μΊμ‹œκ°€ μ‚­μ œλ˜μ§€λ§Œ, μ‚¬μš©λŸ‰μ΄ 적은 μ‹œκ°„λŒ€μ—λŠ” μ΅œλŒ€ 1μ‹œκ°„κΉŒμ§€ μ§€μ†λ˜λŠ” κ²½μš°λ„ μžˆμŠ΅λ‹ˆλ‹€.

  4. **ν”„λ‘¬ν”„νŠΈ 캐싱을 μ“°λ©΄ μΆ”κ°€ λΉ„μš©μ„ μ§€λΆˆν•΄μ•Ό ν•˜λ‚˜μš”?

    μ•„λ‹ˆμš”. 캐싱은 μžλ™μœΌλ‘œ μˆ˜ν–‰λ˜λ©°, 캐싱 κΈ°λŠ₯을 μ‚¬μš©ν•˜κΈ° μœ„ν•΄ λͺ…μ‹œμ μΈ 쑰치λ₯Ό μ·¨ν•˜κ±°λ‚˜ μΆ”κ°€ λΉ„μš©μ„ μ§€λΆˆν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€.

  5. **μΊμ‹œλœ ν”„λ‘¬ν”„νŠΈκ°€ TPM 속도 μ œν•œμ— 영ν–₯을 μ£Όλ‚˜μš”?

    예. 캐싱은 속도 μ œν•œμ— 영ν–₯을 λ―ΈμΉ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

  6. **ν”„λ‘¬ν”„νŠΈ 캐싱 할인은 μŠ€μΌ€μΌ ν‹°μ–΄ 및 배치 APIμ—μ„œ μ‚¬μš©ν•  수 μžˆλ‚˜μš”?

    ν”„λ‘¬ν”„νŠΈ 캐싱에 λŒ€ν•œ 할인은 배치 APIμ—μ„œλŠ” μ‚¬μš©ν•  수 μ—†μ§€λ§Œ μŠ€μΌ€μΌ ν‹°μ–΄μ—μ„œλŠ” μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μŠ€μΌ€μΌ ν‹°μ–΄λ₯Ό μ‚¬μš©ν•˜λ©΄ 곡유 API둜 μœ μΆœλ˜λŠ” λͺ¨λ“  토큰도 캐싱을 받을 수 μžˆμŠ΅λ‹ˆλ‹€.

  7. **ν”„λ‘¬ν”„νŠΈ 캐싱은 제둜 데이터 보쑴 μš”μ²­μ— λŒ€ν•΄ μž‘λ™ν•˜λ‚˜μš”?

    예. ν”„λ‘¬ν”„νŠΈ 캐싱은 기쑴의 데이터 보쑴 μ •μ±…κ³Ό ν˜Έν™˜λ©λ‹ˆλ‹€.